cssparser: Add gtk_css_parser_try_at_keyword()
authorBenjamin Otte <otte@redhat.com>
Mon, 1 Apr 2019 22:21:02 +0000 (00:21 +0200)
committerBenjamin Otte <otte@redhat.com>
Fri, 12 Apr 2019 17:34:28 +0000 (19:34 +0200)
gtk/gtkcssparser.c
gtk/gtkcssparserprivate.h
gtk/gtkcssprovider.c

index c9412e26bfdcd15b7f8ff238dc83673e4bd010a7..774b1dbdfa81b965ee47d63762d2afbdad45c688 100644 (file)
@@ -276,6 +276,28 @@ _gtk_css_parser_try (GtkCssParser *parser,
   return TRUE;
 }
 
+gboolean
+gtk_css_parser_try_at_keyword (GtkCssParser *parser,
+                               const char   *keyword)
+{
+  gsize len;
+
+  g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), FALSE);
+  g_return_val_if_fail (keyword != NULL, FALSE);
+
+  len = strlen (keyword);
+
+  if (parser->data[0] != '@' ||
+      g_ascii_strncasecmp (&parser->data[1], keyword, len) != 0)
+    return FALSE;
+
+  parser->data += len + 1;
+
+  _gtk_css_parser_skip_whitespace (parser);
+
+  return TRUE;
+}
+
 gboolean
 gtk_css_parser_try_ident (GtkCssParser *parser,
                           const char   *ident)
index 1611dea07c93cd470fd4d1edde0681d3e4edb592..1a77c58cd34a5738521048eeaf1a75062197a220 100644 (file)
@@ -79,6 +79,8 @@ gboolean        gtk_css_parser_has_function       (GtkCssParser          *parser
  */
 gboolean        gtk_css_parser_try_ident          (GtkCssParser          *parser,
                                                    const char            *ident);
+gboolean        gtk_css_parser_try_at_keyword     (GtkCssParser          *parser,
+                                                   const char            *keyword);
 gboolean        gtk_css_parser_try_token          (GtkCssParser          *parser,
                                                    GtkCssTokenType        token_type);
 gboolean        _gtk_css_parser_try               (GtkCssParser          *parser,
index 3658b18d1e747f47a93d6b169046f4f382009097..f7a611d369956c2a92dff9fd095debb41f2fc664 100644 (file)
@@ -776,7 +776,7 @@ parse_import (GtkCssScanner *scanner)
 
   gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_IMPORT);
 
-  if (!_gtk_css_parser_try (scanner->parser, "@import", TRUE))
+  if (!gtk_css_parser_try_at_keyword (scanner->parser, "import"))
     {
       gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_IMPORT);
       return FALSE;
@@ -843,7 +843,7 @@ parse_color_definition (GtkCssScanner *scanner)
 
   gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION);
 
-  if (!_gtk_css_parser_try (scanner->parser, "@define-color", TRUE))
+  if (!gtk_css_parser_try_at_keyword (scanner->parser, "define-color"))
     {
       gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_COLOR_DEFINITION);
       return FALSE;
@@ -901,7 +901,7 @@ parse_keyframes (GtkCssScanner *scanner)
 
   gtk_css_scanner_push_section (scanner, GTK_CSS_SECTION_KEYFRAMES);
 
-  if (!_gtk_css_parser_try (scanner->parser, "@keyframes", TRUE))
+  if (!gtk_css_parser_try_at_keyword (scanner->parser, "keyframes"))
     {
       gtk_css_scanner_pop_section (scanner, GTK_CSS_SECTION_KEYFRAMES);
       return FALSE;